﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <climits>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    int n = 0, p = 0;
    cin >> n >> p;

    vector<int> vec(n, 0);
    for (int i = 0; i < n; ++i)
    {
        cin >> vec[i];
    }

    sort(vec.begin(), vec.end());

    int result = INT_MIN;
    int begin = 0, end = 0;//滑动窗口，每次保证滑动窗口里的最大值和最小值的差小于2*p
    while (end < n)
    {
        ++end;

        while (vec[end - 1] - vec[begin] > 2 * p)//滑动窗口，来到一个新的最大值，要把该最大值包含进去，那么可包含的最小值为该最大值减去2*p
        {
            ++begin;
        }

        result = max(result, end - begin);
    }

    cout << result << endl;
    return 0;
}

/*
链接：https://ac.nowcoder.com/acm/problem/229310
来源：牛客网

dd作为集训队的队长，一直掌管着集训室的空调遥控器，
她需要调整温度使队员们更好地进入训练状态，已知集训室一共有n名队员，
每位队员都有一个温度诉求a[i](1≤i≤n)，当室内温度为K时，当且仅当∣a[i]−K∣≤p时，
这个队员能够正常进入训练状态，否则就会开始躁动，作为队长，dd需要调整好温度，
她想知道，在最佳情况下，最多有多少队员同时进入训练状态
输入
第一行两个数n,p(1≤n,p≤1000000),含义如题面描述
接下来一行n个数a[i](1≤a[i]≤1000000)表示每个队员的温度诉求
输出
输出一个数字，表示最多有多少队员同时进入训练状态

示例1
输入
6 2
1 5 3 2 4 6
输出
5
说明
温度调成3或4，都可以满足5名队员同时进入训练状态
*/

